@keyframes bounceIn {
  0%,
  20%,
  40%,
  60%,
  80%,
  to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }

  20% {
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    transform: scale3d(0.9, 0.9, 0.9);
  }

  60% {
    opacity: 1;
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    transform: scale3d(0.97, 0.97, 0.97);
  }

  to {
    opacity: 1;
    transform: scaleX(1);
  }
}

.animate__bounceIn {
  animation: bounceIn 0.75s;
}

@keyframes bounceInRight {
  0%,
  60%,
  75%,
  90%,
  to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    transform: translate3d(3000px, 0, 0) scaleX(3);
  }

  60% {
    opacity: 1;
    transform: translate3d(-25px, 0, 0) scaleX(1);
  }

  75% {
    transform: translate3d(10px, 0, 0) scaleX(0.98);
  }

  90% {
    transform: translate3d(-5px, 0, 0) scaleX(0.995);
  }

  to {
    transform: translateZ(0);
  }
}

.animate__bounceInRight {
  animation: bounceInRight 0.75s;
}

@keyframes blurIn {
  0% {
    opacity: 0;
    filter: blur(10px);
  }
  30% {
    opacity: 0.4;
    filter: blur(8px);
  }

  50% {
    opacity: 0.5;
    filter: blur(7px);
  }

  100% {
    opacity: 1;
    filter: none;
  }
}

.animate__blurIn {
  animation: blurIn 0.8s;
}

@keyframes blink {
  0%,
  100% {
    background-color: currentColor;
  }
  50% {
    background-color: transparent;
  }
}

// blink 闪烁动画
.animation-blink {
  animation: blink 1.2s infinite steps(1, start);
}
